Multimedia content for viewing at computer devices permits users to view digital content comprising audio, video, graphics, and multi-channel data. A wide variety of computer devices can be used to access such multimedia content over a wide variety of networks and connection schemes. Different types of network access technologies provide a wide range of network availability. For example, while network bandwidth available in a GPRS network ranges from 9.6 kbs to 144 kbps, the bandwidth available for 1xEV-DO is in the range of 1 Mbps. Additionally, the network condition can change dynamically for some of the network access technologies, such as wireless networks including WLAN, WiMaX, GPRS, EDGE, and the like. Thus, the available bandwidth for a given network access technology can vary over the duration of a communication session with a receiving device. Similarly, different receiving devices have different resource availability characteristics that can impact the delivery of digital content to all devices. Thus, different users can have very different multimedia viewing experiences.
Streaming of multimedia content involves transfer of data from a content source to a receiving device for real-time display and rendering of the content. Typically, a cache or buffer data store is maintained at the receiving device having a relatively small data capacity that is sufficient for transitory storage of multimedia content. The cache store is sufficient so the user does not perceive data arriving piecemeal, but rather observes an uninterrupted stream of content that is generally referred to as a multimedia clip. A multimedia clip in its entirety can contain sufficient content to create a run time of seconds, minutes, or even hours, though typically the receiving device cache contains no more than a few seconds worth of content at a time. The streaming environment is essentially equivalent to a television broadcast in terms of the need to maintain a steady communications connection for the duration of the clip with no drops of information from beginning to end. The time varying and bandwidth limited nature of network conditions can create dynamic challenges for delivery of multimedia content in the quest to deliver the content such that the overall perceptual quality of the content for the desired group of users is sufficiently high. The streaming delivery of the content can be characterized by the quality of experience (either for individual users such as typical in the case of video-on-demand or for an aggregated group of users such as in the case of broadcasting of content).
One type of streaming delivery that presents challenges is streaming of live content. A typical application of streaming of live content is providing a broadcast feed, such as a live television broadcast, in near-simultaneous re-broadcast over a network computer connection. A stream of live content provider receives the live feed, which may comprise a television signal such as NTSC, PAL, or SECAM, and encodes the live feed for delivery over a computer network such as the Internet. The digital content of a stream of live content is typically unknown prior to receiving the signal. Hence, the video quality of the live feed signal, the resource requirements for processing the live feed, optimal encoding strategies for the content, and the like cannot be determined in advance. The situation becomes even more complex if the user (the person viewing the stream of live content at the receiving device) is permitted to change viewing channels or if the live feed content requires content insertion during encoding. In such circumstances, it is important for the communication session to continue without interruption and for the viewing experience to maintain a high quality.
Wireless network connections can be especially challenging for streaming delivery of multimedia content. Current real-time (streaming) delivery services on the Internet (e.g., Real Networks, Windows Media) have made some attempts at reducing the bandwidth required for delivering video and multimedia content, and adjusting the delivery of content according to the available bandwidth of wireless networks. Streaming delivery, however, would be improved if the streaming delivery could account for the nature of the content being streamed and for dynamic changes in network conditions on a user-by-user basis in response to real-time changes in network conditions.
Dynamic online adaptation of the content usually involves examining the content over a temporal duration and making decisions with respect to the encoding and streaming parameters associated with the bitstream for the temporal duration of the content stream transmitted over the network. This often means that the multimedia streamer will need to repeatedly buffer compressed multimedia content of a sufficient length for the temporal duration. For typical video-on-demand applications for which the content has been entirely pre-encoded (albeit with possibly multiple versions suitable for different network conditions), this issue of buffering the content is straightforward. For example, multiple versions of the multimedia clip can be prepared for a combination of network conditions, and an appropriate version can be selected for streaming at intervals corresponding to the temporal duration supported by the content source server. The buffer length or duration of streaming intervals may be equal in length to the clip itself or may be for a portion of the entire clip.
In the case of streaming of live content or broadcast or multicast of multimedia content for which the temporal duration is unknown to the encoder/streamer (i.e. the duration of the clip is infinite as far as the encoder and streamer are concerned), methods and apparatus are needed to provide sufficient content buffering on a continued basis, thereby allowing dynamic and online content adaptation, while at the same, providing multiple users with access to the same live broadcast or multicast content.